<template>
	<view>
		<view v-if="inPorcessOrderId != null" class="order-process" @click="toOrder">您有进行中的订单,点击查看</view>
		
		<map id="map" :longitude="from.longitude" :latitude="from.latitude" :style="contentStyle" scale="15" :enable-traffic="false" :show-location="true" :enable-poi="true" class="map">
			<cover-image class="location" src="../../static/workbench/location.png" @tap="returnLocationHandle()"></cover-image>
		</map>
		<view class="panel">
			<view class="from" @tap="chooseLocationHandle('from')">
				<text>{{ from.address }}</text>
			</view>
			<view class="dashed-line"></view>
			<view class="to" @tap="chooseLocationHandle('to')">
				<text>{{ to.address }}</text>
			</view>
			<button class="btn" @tap="toCreateOrderHandle">查看路线</button>
		</view>
	</view>
</template>

<script>
	
import GtPush from '../../lib/gtpush-min.js'
	//地图点选插件
const chooseLocation = requirePlugin('chooseLocation');
let QQMapWX = require('../../lib/qqmap-wx-jssdk.min.js');
let qqmapsdk ;

export default {
	data() {
		return {
			//开始位置
			from: {
				address: '输入你的开始位置',
				longitude: 0,
				latitude: 0
			},
			//结束位置
			to: {
				address: '输入你的目的地', 
				longitude: 0,
				latitude: 0
			},
			
			//窗口样式
			contentStyle: '',
			windowHeight: 0,
			//地图对象
			map: null,
			//标记:开始位置点选或者结束位置点选
			chooseFromOrToflag: null,
			inPorcessOrderId:null,
			chooseType:"",
		};
	},
	methods: {
    initQQMap(){
      qqmapsdk = new QQMapWX({
        key: this.Consts.QQMAP_KEY
      });
    },
    getLocation(){
      var _this = this;
      uni.getLocation({
        type: 'gcj02',
        success: function (res) {
          _this.from.latitude = res.latitude;
          _this.from.longitude = res.longitude
          _this.locationToAddress(res.latitude,res.longitude)
        }
      });
    },
    locationToAddress(latitude,longitude){
      let _this = this;
      qqmapsdk.reverseGeocoder({
        location: {
          latitude: latitude,
          longitude: longitude
        },
        success: function(res) {
          if(res.message == "Success" && res.status == 0){
            _this.from.address = res.result.formatted_addresses.recommend;
          }
        },
        fail: function(error) {
          console.error(error);
        }
      })
    },
    accpetLocationChange(){
      let _this = this;
      //拿到小程序的坐标，实时传输过来的
      uni.$on("locationChange",(location)=>{
        _this.from.latitude = location.latitude;
        _this.from.longitude = location.longitude;
      })
    },
    //初始化窗口样式
    initStyle(){
      let _this = this;
      //处理窗口样式
      let windowHeight = uni.getSystemInfoSync().windowHeight;
      _this.windowHeight = windowHeight;
      _this.contentStyle = `height:${_this.windowHeight}px;`;
    },
    //触发返回当前坐标
    returnLocationHandle(){
      var _this = this;
      _this.getLocation();//防止你在动
      var map = uni.createMapContext("map",_this);
      //移动到里面
      map.moveToLocation({
        longitude:_this.from.longitude,
        latitude:_this.from.latitude
      })
    },
    //点选地址
    chooseLocationHandle(type){
      this.chooseType = type;
      const key = this.Consts.QQMAP_KEY; //使用在腾讯位置服务申请的key
      const referer = 'gh_6184abeff7ac'; //调用插件的app的名称
      wx.navigateTo({
        url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer
      });
    },
    changePosition(location){
      let _this = this;
      if(!(_this.chooseType || location)){
        return;
      }
      if(_this.chooseType == 'from'){
        _this.from.address = location.name
        _this.from.longitude = location.longitude
        _this.from.latitude = location.latitude
      }else {
        _this.to.address = location.name
        _this.to.longitude = location.longitude
        _this.to.latitude = location.latitude
      }
    },
    toCreateOrderHandle(){
      uni.setStorageSync("from",this.from);
      uni.setStorageSync("to",this.to);
      uni.navigateTo({
        url:"/pages/create_order/create_order"
      })
    }
  },

	onShow: function() {
    this.accpetLocationChange();
    const location = chooseLocation.getLocation();
    this.changePosition(location);
	},
	onHide: function() {
	},
	onLoad: function() {
		let _this = this;
    _this.initQQMap();
    _this.getLocation();
    _this.initStyle();
	
		
	},
	onUnload: function() {
		
	}
};
</script>

<style lang="less">
@import url('workbench.less');
</style>
